package eteam.aps.service;

import eteam.aps.common.helper.JsonPage;
import eteam.aps.model.entity.Depot;
import eteam.aps.model.vo.DepotVo;

import java.util.List;
import java.util.Map;

/**
 * 仓库相关业务接口
 *
 * @author WMT
 */
public interface DepotService {

    /**
     * 添加仓库
     * @param depot 仓库
     * @return 受影响的行数
     */
    int insert(Depot depot);

    /**
     * 逻辑删除仓库
     * @param fId fId
     * @return 受影响的行数
     */
    int delete(String fId);

    /**
     * 修改仓库信息
     * @param depot 仓库
     * @return 受影响的行数
     */
    int update(Depot depot);

    /**
     * 分页 模糊查询所有仓库列表
     * @param map 查询条件
     * @param page 当前页数
     * @param pageSize 每页个数
     * @return 仓库列表
     */
    JsonPage<DepotVo> selectAll(Map<String,Object> map, int page, int pageSize);

    /**
     * 根据fId查询仓库详情
     * @param fId fId
     * @return 仓库详情
     */
    DepotVo selectDetails(String fId);

    /**
     * 根据fId查询仓库
     * @param fId fId
     * @return 仓库
     */
    Depot selectByFId(String fId);

    /**
     * 根据fId查询仓库状态
     * @param fId fId
     * @return 状态
     */
    int selectFState(String fId);

    /**
     * 查询所有不包含删除/作废的仓库
     *
     * @return 仓库列表
     */
    List<DepotVo> selectByList();

    /**
     * 根据仓库编号统计仓库数量
     * @param deCode 仓库编号
     * @return 数量
     */
    int selectCountByDeCode(String deCode);

    /**
     * 根据仓库名称统计仓库数量
     * @param deName 仓库名称
     * @return 数量
     */
    int selectCountByDeName(String deName);
}
